/*
 * Cesta de la compra. 
 * Clase del tipo Singleton (única instancia)
 */
package Principal;

import java.util.ArrayList;

/**
 *
 * @author Borja
 */
public class Cesta {
    private  ArrayList<Producto> productos;
    private  ArrayList<Integer> cantidad;
    private  int contador = 0;
    static private Cesta instancia = null;

    
    private Cesta(){    
        productos = new ArrayList();
        cantidad = new ArrayList();
    }
    
    static public Cesta getInstancia() {
        if (instancia == null) {
            instancia = new Cesta();
        }
        return instancia;
    }


    /**
     * @return the productos
     */
    public void añadirProducto(Producto producto, int cantidad){
        boolean existe = false;
        int index = -1;
        
        for (Producto pAux:this.productos){
            if ((pAux.getIdFamilia() == producto.getIdFamilia()) && (pAux.getIdProducto()==producto.getIdProducto())){
                existe = true;
                producto = this.productos.get(this.productos.indexOf(pAux)); 
                index = this.productos.indexOf(producto);
            }
        } 
        if (existe){
            this.cantidad.set(index,(Integer)(this.cantidad.get(index)) + cantidad);       
        }else{
            this.productos.add(producto);
            this.cantidad.add(cantidad);
            contador += 1;
                            System.err.println(contador);
        }
    }
    public void eliminarProducto(int idProducto,int idFamilia){
        for (Producto producto:productos){   
            if ( (producto.getIdFamilia() == idFamilia) && (producto.getIdProducto() == idProducto)){
                contador += -1;
                getProductos().remove(producto);
                cantidad.remove(getProductos().indexOf(producto));
            }
        }
    }
    public  ArrayList getProductos() {return productos;}
  
    public int getTamanoCesta(){return contador;}
    

    /**
     * @param productos the productos to set
     */
    public void setProductos(ArrayList productos) {
        this.productos = productos;
    }

    /**
     * @return the cantidad
     */
    public ArrayList getCantidad() {
        return cantidad;
    }
    public int getCantidad(Producto producto) {
        
        return this.cantidad.get(this.productos.indexOf(producto));
    }
    /**
     * @param cantidad the cantidad to set
     */
    public void setCantidad(ArrayList cantidad) {
        this.cantidad = cantidad;
    }
 
    public void removeProductos(){
        productos = new ArrayList<Producto>();
        cantidad = new ArrayList<Integer>();
        contador = 0;

    }
    
}
